Computing devices, have made significant contributions toward the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous devices, such as personal computers, servers, hand-held devices, distributed computer systems, calculators, audio devices, video equipment, and telephone systems, have facilitated increased productivity and reduced costs in analyzing and communicating data in most areas of business, science, education and entertainment.
Mobile computing devices such as laptop personal computers, tablet personal computers, netbooks, smart phones and the like further enable increased productivity. However, the tradeoff between power consumption and responsiveness of the mobile computing device provide additional challenges. Deep sleep is an important feature in mobile devices as it allows the processor to reduce power consumption when the mobile device is not actively being used. During this mode, power to a substantial portion (typically >99%) of the processor is turned off. Only a small portion of the processor is kept on which can be used to wake up the rest of the processor from deep sleep.
As the power to most of the mobile processor (applications processor) is turned off during deep sleep, those portions get a reset on wake up from deep sleep. The USB controllers and transceivers on the mobile processor also get a reset. Since they are getting reset, they don't have knowledge of any device connected to downstream before the system went to deep sleep. Hence the downstream devices need to be discovered/detected again and a complete re-enumeration needs to be done before we can start using the device again.
Hence, on wake-up from deep sleep, a USB host EHCI controller will start the enumeration of the connected device by resetting the USB bus. This enumeration process typically takes 1-2 seconds and after identifying the connected device, a relevant class driver will be loaded. This adds a significant delay to a wake event for mobile devices. This is particularly troublesome if a modem is connected on the USB. The OS takes a long time to reload the device drivers and that adds to the delay. This could be a problem if, for example, the user receives a call while his or her smartphone is in deep sleep. In addition, some devices aren't friendly with this kind of re-enumeration with respect to deep sleep operation and wakeup thereafter.
To avoid this delay, it would be beneficial to keep the USB controller on during sleep mode. However, in sleep mode the power to the USB controller is turned off and therefore cannot be placed in sleep mode. Accordingly, there is a continued need for improved techniques for waking-up a USB port from deep sleep.